package com.fosss.sort;

public class SelectionSort {
    public static void main(String[] args) {

//        int[] arr = {8, 5, 6, 9, 1, 4};
//        System.out.println("排序前的数组->" + Arrays.toString(arr));
//        chooseSort(arr);
//        System.out.println("排序后的数组->" + Arrays.toString(arr));

        //测试时间复杂度
        //创建一个80000条数据的数组
        int[] arr=new int[80000];
        for(int i = 0; i <80000;i++){
            arr[i]=(int)(Math.random()*80000);
        }
        long startTime = System.currentTimeMillis();
        selectionSort(arr);
        long endTime = System.currentTimeMillis();
        System.out.println("花费时间"+(endTime-startTime)+"毫秒");//1970
    }

    public static void selectionSort(int[] arr) {

        for (int i = 0; i < arr.length - 1; i++) {
            int k = -1;//用来记录每一趟循环的最值的下标
            int min=arr[i];//初始化最值为每一趟循环的首元素
            for (int j = i; j < arr.length - 1; j++) {

                if (min > arr[j + 1]) {
                    k = j+1;//记录下标
                    min = arr[j + 1];
                }
            }
            if (k != -1) {//需要进行交换
                int t = arr[i];
                arr[i] = arr[k];
                arr[k] = t;
            }
        }
    }
}

